<?php
//注意这种方式，前台用的时候要把$cate缓存起来，因为查找的时候是把整个数据库的信息查找查找出来的，在进行递归的，这样肯定会
//消耗资源，我们可以通过结合缓存使用的话就能大大的减少开销，这样后边调前台的时候，我们就会加上缓存的功能，把递归的无限极分类缓存起来，
//因为现在是在做后台，后台的话就只有几个管理员登陆，所以后台就没有必要加缓存了，做缓存讲前端的时候在做缓存
Class Category{
	//组合一维数组
	Static Public function unlimitedForLevel($cate,$html="--",$pid = 0,$level=0){
		$arr = array();
		foreach($cate as $v){
			if($v['pid'] == $pid){
				$v['level'] = $level + 1;
				$v['html'] = str_repeat($html,$level);
				$arr[] = $v;
				//self::unlimitedForLevel($cate,$html,$v['id'],$level + 1);
				$arr = array_merge($arr,self::unlimitedForLevel($cate,$html,$v['id'],$level + 1));
			}

		}
		return $arr;
	}
	//组合多维数组
	Static Public function unlimitedForLayer($cate,$name='child',$pid=0){
		$arr = array();
		foreach ($cate as $v){
			if($v['pid'] == $pid){
				$v[$name] = self::unlimitedForLayer($cate,$name,$v['id']);
				$arr[] = $v;
			}
		}
		return $arr;
	}
	//传递一个子分类ID返回所有的父级分类
	Static Public function getParents($cate,$id){
		$arr = array();
		foreach($cate as $k=>$v){
			if($v['id'] == $id){
				$arr[] = $v;
				$arr = array_merge(self::getParents($cate,$v['pid']),$arr);
			}
		}
		return $arr;
	}

	//传递一个父级分类ID返回所有子分类ID
	Static Public function getChildsId($cate,$pid){
		$arr = array();
		foreach($cate as $v){
			if($v['pid'] == $pid){
				$arr[] = $v['id'];
				$arr = array_merge($arr,self::getChildsId($cate,$v['id']));
			}
		}
		return $arr;
	}
	//传递一个父级分类ID返回所有子级分类
	Static Public function getChilds($cate,$pid){
		$arr = array();
		foreach ($cate as $v){
			if($v['pid'] == $pid){
				$arr[] = $v;
				$arr = array_merge($arr ,self::getChilds($cate,$v['id']));
			}
		}
		return $arr;
	}
}

?>